<?php
declare (strict_types=1);

namespace app\admin;

use think\App;
use think\facade\View;
use think\facade\Request;

/**
 * 控制器基础类
 */
class BaseController extends View
{
    /**
     * 构造方法
     * @param App $app
     */
    public function __construct(App $app)
    {
        $this->customer_personalization();
        $this->system_config_param($app);
    }

    /**
     * 客户个性化设置信息
     *
     * @return void
     * @author andy.wang
     * @created 2024-11-2024/11/7 20:53:06
     */
    protected function customer_personalization()
    {
        //公司参数
        View::assign("company_logo", "");
        View::assign("verification_code", 0);
    }

    /**
     * 系统配置参数
     *
     * @param App $app
     * @return void
     * @author andy.wang
     * @created 2024-11-2024/11/7 20:52:46
     */
    protected function system_config_param(App $app)
    {
        // 版本号
        View::assign("version", config("app.version"));

        //项目前端静态文件根目录和插件目录
        $module = str_replace($app->getBasePath(), "", trim($app->getAppPath(), DIRECTORY_SEPARATOR));
        View::assign("static", "/static/" . $module);
        View::assign("plugins", "/static/plugins");
        View::assign("images", "/static/images");
    }

    /**
     * 获取模板路径
     *
     * 本函数旨在根据请求的动作和配置来确定并返回模板的路径
     * 它首先获取当前请求的动作，然后检查配置中是否有对应的动作模板设置
     * 如果有，则组合出模板的路径并返回；如果没有，则返回空字符串
     *
     * @return string 返回模板路径或空字符串
     * @author andy.wang
     * @created 2024-11-2024/11/7 20:52:46
     */
    protected function getTemplate()
    {
        // 获取当前请求的动作
        $action = Request::action(true);

        // 检查配置中是否有对应的动作模板设置
        if ($template = (string)config("template." . $action)) {
            // 获取视图配置
            $view = config("view");

            // 获取当前请求的控制器
            $controller = Request::controller(true);

            // 组合并返回模板路径
            return $controller . $view["view_depr"] . $action . $view["view_depr"] . $template;
        }

        // 如果没有对应的模板设置，返回空字符串
        return "";
    }
}
